Data communication systems consist of sending equipment and receiving equipment. Data units transmitted by the sending equipment using an unreliable transmission medium (wireless link, power distribution network, etc.) cannot be guaranteed to reach the receiving equipment in a decodable state due to transmission medium imperfections and environmental influences, such as thermal noise, fading, interference, equipment manufacturing errors, etc. Consequently, any data unit may be lost during transmission or be received in a condition that does not permit the receiving equipment to correctly decode that data unit. Automatic Repeat Request (ARQ) is a commonly implemented protocol for combating data unit loss and controlling errors to improve Quality of Service (QoS).
When the ARQ protocol is implemented, the sending equipment transmits a number of data units (packets, frames or symbols, for example) within a predefined transmit time window. The receiving equipment is aware of the duration of the transmit time window. After sending the data, the sending equipment expects to receive an acknowledgement from the receiving equipment within a predefined response time window. The acknowledgement identifies each packet that has been received (or has not been received, depending on the implementation). The sending equipment uses the acknowledgement to determine whether some or all of the packets have to be retransmitted. If an acknowledgement is not received within the response time window, the sending equipment may transmit new data units or retransmit all the data units sent in the previous transmit time window, again depending on the implementation. If the sending equipment retransmits some or all of the data units, the receiving equipment reprocesses them and acknowledges once more, and so on. The way in which the data is reprocessed by the receiving equipment depends on the ARQ protocol implementation. When the ARQ protocol is implemented in data link layer the protocol generally discards the original data unit(s) and decodes the resent data unit(s). Hybrid ARQ, which is generally implemented in the physical layer, combines the resent data unit(s) with the original data unit(s) before attempting to decode the data unit(s). ARQ protocols can be roughly grouped into the following categories.
Stop-and-wait ARQ: The sending equipment transmits one data unit at a time. After transmitting each data unit, the sending equipment waits during a wait time window (also referred to as a “time out”) for an acknowledgement from the receiving equipment. If the receiving equipment is able to decode the data unit correctly, it sends back an acknowledgement to the sending equipment. The sending equipment then sends the next data unit. If the sending equipment does not receive the acknowledgement during the wait time window, it re-sends the same data unit and repeats the process until it receives an acknowledgement from the receiving equipment. Stop-and-wait ARQ is not bandwidth efficient because each data unit requires an acknowledgement that can only be sent after the data unit has been received, demodulated and decoded.
Go-Back-N ARQ: The sending equipment sends a block of sequentially numbered data units during a transmit time window without waiting for an acknowledgement. The receiving equipment tracks the sequence number of a next data unit it expects to receive, and sends that number with each acknowledgement it sends back to the transmitter. The receiving equipment ignores any data unit that does not have the expected sequence number, i.e. the receiving equipment discards any data unit that is out of sequence and sends a REJ (reject) message to the sending equipment that identifies the sequence number of any missing data unit. After a REJ message is sent, the receiving equipment waits for the identified data unit. When the sending equipment receives the REJ message, the sending equipment retransmits the identified data unit as well as each subsequent data unit even if those data units have already been sent. Go-Back-N ARQ is more efficient than Stop-and-Wait ARQ but it is still suffers from inefficiency due to the repeat transmissions when a data unit is lost.
Selective Repeat ARQ: The sending equipment sends a number of data units determined by a transmit window size, regardless of any data unit loss. Unlike Go-Back-N ARQ, the receiving equipment accepts and acknowledges data units sent after a data unit is lost or cannot be decoded. The receiving equipment keeps track of the sequence number of the earliest data unit it has not received or has not been able to decode, and sends that sequence number with every acknowledgement returned to the sending equipment. The receiving equipment continues to fill its receiving window with the subsequent data units, replying each time with an acknowledgement containing the sequence number of the earliest missing data unit. Once the sending equipment has sent all the data units in it's transmit window, it re-sends the data unit specified by the sequence number received in the acknowledgement messages. After resending the missing data unit, the sending equipment picks up where it left off with the last sent data unit.
With Selective Repeat ARQ, the size of the transmit window and the receive window must be identical and must accommodate a number of data units that is equal to half of the maximum sequence number (assuming that the data units are numbered from 0 to n-1) in order to avoid miscommunication when data units are dropped. The sending equipment moves the transmit window forward each time a data unit is acknowledged by the receiving equipment.
When variable length messages are sent, the probability of error-free reception diminishes in inverse proportion to increasing message length. Consequently, if standard ARQ protocols are used to transmit variable length messages there is increased difficulty delivering longer messages because each repeat resends the entire message. Selective retransmission applied to variable length messages eliminates the difficulty in delivering longer messages because successfully delivered data units are retained by the receiving equipment after each transmission, and the number of undelivered data units in following transmissions is reduced. However, all known ARQ protocols suffer from the drawback that the repeat request is reactive and can only be sent after an attempt has been made to decode a data unit. While the reactive repeat request may be acceptable for data applications that are not time sensitive, it can severely impact the QoS of time critical applications such as television, streaming video, voice, multimedia, etc.
There therefore exists a need for a method and system for proactive repeat transmission to improve the QoS of data delivered using an unreliable transmission medium.